home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / Includes_and_Autodocs_3.5 / include / reaction / reaction_macros.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-10-27  |  11.7 KB  |  308 lines

  1. #ifndef REACTION_REACTION_MACROS_H
  2. #define REACTION_REACTION_MACROS_H
  3. /*
  4. **    $VER: reaction_macros.h 44.1 (19.10.1999)
  5. **    Includes Release 44.1
  6. **
  7. **    Reaction macros
  8. **
  9. **    (C) Copyright 1987-1999 Amiga, Inc.
  10. **        All Rights Reserved
  11. */
  12.  
  13. /****************************************************************************
  14.  *  The following macro defines allow easy object creation.
  15.  *
  16.  *  You can do things such as:
  17.  *
  18.  *   layoutgadget = LayoutObject,
  19.  *                      LAYOUT_BevelStyle, GroupFrame,
  20.  *                      LAYOUT_AddChild,
  21.  *                          ButtonObject,
  22.  *                              GA_ID, 1L,
  23.  *                              GA_Text, "_Hamburgers",
  24.  *                          EndButton,
  25.  *                      LAYOUT_AddChild,
  26.  *                          ButtonObject,
  27.  *                              GA_ID, 2L,
  28.  *                              GA_Text, "Hot _Dogs",
  29.  *                          EndButton,
  30.  *                  EndLayout;
  31.  *
  32.  *   Be careful with your commas and colons; only the FIRST object gets
  33.  *   an "End;", objects that are embedded should get a comma ("End,"), so
  34.  *   that the TagList continues.
  35.  */
  36.  
  37. /****************************************************************************
  38.  * Gadget Objects Creation Macros
  39.  */
  40.  
  41. #define ButtonObject        NewObject( NULL, "button.gadget"
  42.  
  43. #define ToggleObject        NewObject( NULL, "button.gadget",\
  44.                                        GA_ToggleSelect, TRUE
  45.  
  46. #define CheckBoxObject      NewObject( (((struct ClassLibrary *)CheckBoxBase)->cl_Class), NULL
  47.  
  48. #define ChooserObject       NewObject( (((struct ClassLibrary *)ChooserBase)->cl_Class), NULL
  49.  
  50. #define ClickTabObject        NewObject( (((struct ClassLibrary *)ClickTabBase)->cl_Class), NULL
  51. #define ClickTabsObject        ClickTabObject
  52.  
  53. #define PopUpObject         NewObject( (((struct ClassLibrary *)ChooserBase)->cl_Class), NULL,\
  54.                                        CHOOSER_PopUp, TRUE
  55. #define DropDownObject      NewObject( (((struct ClassLibrary *)ChooserBase)->cl_Class), NULL,\
  56.                                        CHOOSER_DropDown, TRUE
  57. #define FuelGaugeObject     NewObject( (((struct ClassLibrary *)FuelGaugeBase)->cl_Class), NULL
  58. #define FuelObject          FuelGaugeObject
  59.  
  60. #ifndef GetFileObject
  61. #define GetFileObject       NewObject( (((struct ClassLibrary *)GetFileBase)->cl_Class), NULL
  62. #endif
  63.  
  64. #ifndef GetFontObject
  65. #define GetFontObject       NewObject( (((struct ClassLibrary *)GetFontBase)->cl_Class), NULL
  66. #endif
  67.  
  68. #ifndef GetScreenModeObject
  69. #define GetScreenModeObject NewObject( GETSCREENMODE_GetClass(), NULL
  70. #endif
  71.  
  72. #define IntegerObject       NewObject( (((struct ClassLibrary *)IntegerBase)->cl_Class), NULL
  73.  
  74. #define PaletteObject       NewObject( (((struct ClassLibrary *)PaletteBase)->cl_Class), NULL
  75.  
  76. #define PageObject          NewObject( PAGE_GetClass(), NULL
  77.  
  78. #define PenMapObject NewObject( PENMAP_GetClass(), NULL
  79.  
  80. #define LayoutObject        NewObject( LAYOUT_GetClass(), NULL
  81.  
  82. #define VLayoutObject        NewObject( LAYOUT_GetClass(), NULL, LAYOUT_Orientation, LAYOUT_ORIENT_VERT
  83.  
  84. #define HLayoutObject        NewObject( LAYOUT_GetClass(), NULL
  85. #define VGroupObject        VLayoutObject
  86. #define HGroupObject        HLayoutObject
  87.  
  88. #define ListBrowserObject   NewObject( (((struct ClassLibrary *)ListBrowserBase)->cl_Class), NULL
  89.  
  90. #define RadioButtonObject   NewObject( (((struct ClassLibrary *)RadioButtonBase)->cl_Class), NULL
  91. #define MxObject            RadioButtonObject
  92.  
  93. #define ScrollerObject      NewObject( (((struct ClassLibrary *)ScrollerBase)->cl_Class), NULL
  94.  
  95. #define SpeedBarObject      NewObject( (((struct ClassLibrary *)SpeedBarBase)->cl_Class), NULL
  96.  
  97. #define SliderObject        NewObject( (((struct ClassLibrary *)SliderBase)->cl_Class), NULL
  98.  
  99. #define StatusObject        NewObject( STATUSBAR_GetClass(), NULL
  100.  
  101. #define StringObject        NewObject( (((struct ClassLibrary *)StringBase)->cl_Class), NULL
  102.  
  103. #define SpaceObject         NewObject( (((struct ClassLibrary *)SpaceBase)->cl_Class), NULL
  104.  
  105. #define TextFieldObject     NewObject( TEXTFIELD_GetClass(), NULL
  106.  
  107. /****************************************************************************
  108.  * Image Object Creation Macros
  109.  */
  110. #define BevelObject         NewObject( (((struct ClassLibrary *)BevelBase)->cl_Class), NULL
  111.  
  112. #define BitMapObject        NewObject( (((struct ClassLibrary *)BitMapBase)->cl_Class), NULL
  113.  
  114. #define DrawListObject      NewObject( (((struct ClassLibrary *)DrawListBase)->cl_Class), NULL
  115.  
  116. #define GlyphObject         NewObject( (((struct ClassLibrary *)GlyphBase)->cl_Class), NULL
  117.  
  118. #define LabelObject         NewObject( (((struct ClassLibrary *)LabelBase)->cl_Class), NULL
  119.  
  120. /****************************************************************************
  121.  * Class Object Creation Macros
  122.  */
  123. #define WindowObject        NewObject( (((struct ClassLibrary *)WindowBase)->cl_Class), NULL
  124.  
  125. #define ARexxObject         NewObject( (((struct ClassLibrary *)ARexxBase)->cl_Class), NULL
  126.  
  127. /****************************************************************************
  128.  * Window class method macros
  129.  */
  130. #define RA_OpenWindow(win)       (struct Window *)DoMethod(win, WM_OPEN, NULL)
  131. #define RA_CloseWindow(win)      DoMethod(win, WM_CLOSE, NULL)
  132. #define RA_HandleInput(win,code) DoMethod(win, WM_HANDLEINPUT, code)
  133. #define RA_Iconify(win)          (BOOL)DoMethod(win, WM_ICONIFY, NULL)
  134. #define RA_Uniconify(win)         RA_OpenWindow(win)
  135.  
  136. /****************************************************************************
  137.  * ARexx class method macros
  138.  */
  139. #define RA_HandleRexx(obj)       DoMethod(obj, AM_HANDLEEVENT )
  140. #define RA_FlushRexx(obj)        DoMethod(obj, AM_FLUSH )
  141.  
  142. /* Easy macro to set up a Hook for a string gadget, etc
  143.  */
  144. #ifdef _DCC
  145. #define RA_SetUpHook(apphook,func,data)    {                     \
  146.                                         apphook.h_Entry = (HOOKFUNC)func; \
  147.                                         apphook.h_SubEntry = NULL;        \
  148.                                         apphook.h_Data = (APTR)data; }
  149. #else
  150. #define RA_SetUpHook(apphook,func,data)    {                     \
  151.                                         apphook.h_Entry = (HOOKFUNC)func; \
  152.                                         apphook.h_SubEntry = NULL;        \
  153.                                         apphook.h_Data = (APTR)data; }
  154. #endif
  155.  
  156. /****************************************************************************
  157.  * Additional BOOPSI Classes.
  158.  */
  159. #define ColorWheelObject    NewObject( NULL, "colorwheel.gadget"
  160. #define GradientObject      NewObject( NULL, "gradientslider.gadget"
  161. #define LedObject           NewObject( NULL, "led.image"
  162.  
  163. /****************************************************************************
  164.  * Reaction synomyms for End which can make layout
  165.  * groups easier to follow.
  166.  */
  167. #define WindowEnd           End
  168.  
  169. #define BitMapEnd           End
  170. #define ButtonEnd           End
  171. #define CheckBoxEnd         End
  172. #define ChooserEnd          End
  173. #define ClickTabEnd            End
  174. #define ClickTabsEnd        End
  175. #define FuelGaugeEnd        End
  176. #define IntegerEnd          End
  177. #define PaletteEnd          End
  178. #define LayoutEnd           End
  179. #define ListBrowserEnd      End
  180. #define PageEnd             End
  181. #define RadioButtonEnd      End
  182. #define ScrollerEnd         End
  183. #define SpeedBarEnd         End
  184. #define SliderEnd           End
  185. #define StatusEnd           End
  186. #define StringEnd           End
  187. #define SpaceEnd            End
  188. #define StatusbarEnd        End
  189. #define TextFieldEnd        End
  190.  
  191. #define ARexxEnd            End
  192.  
  193. #define BevelEnd            End
  194. #define DrawListEnd         End
  195. #define GlyphEnd            End
  196. #define LabelEnd            End
  197.  
  198. #define ColorWheelEnd       End
  199. #define GradientSliderEnd   End
  200. #define LedEnd              End
  201.  
  202. /****************************************************************************
  203.  * Vector Glyph Images.
  204.  */
  205. #define GetPath             GLYPH_POPDRAWER
  206. #define GetFile             GLYPH_POPFILE
  207. #define GetScreen           GLYPH_POPSCREENMODE
  208. #define GetTime             GLYPH_POPTIME
  209. #define CheckMark           GLYPH_CHECKMARK
  210. #define PopUp               GLYPH_POPUP
  211. #define DropDown            GLYPH_DROPDOWN
  212. #define ArrowUp             GLYPH_ARROWUP
  213. #define ArrowDown           GLYPH_ARROWDOWN
  214. #define ArrowLeft           GLYPH_ARROWLEFT
  215. #define ArrowRight          GLYPH_ARROWRIGHT
  216.  
  217. /****************************************************************************
  218.  * Bevel Frame Types.
  219.  */
  220. #define ThinFrame           BVS_THIN
  221. #define ButtonFrame         BVS_BUTTON
  222. #define StandardFrame       BVS_STANDARD
  223. #define RidgeFrame          BVS_FIELD
  224. #define StringFrame         BVS_FIELD
  225. #define GroupFrame          BVS_GROUP
  226. #define DropBoxFrame        BVS_DROPBOX
  227. #define HBarFrame           BVS_SBAR_HORIZ
  228. #define VBarFrame           BVS_SBAR_VERT
  229. #define RadioFrame          BVS_RADIOBUTTON
  230. #define MxFrame             BVS_RADIOBUTTON
  231.  
  232. /****************************************************************************
  233.  * Often used simple gadgets
  234.  */
  235. #define Label(text)           CHILD_Label, LabelObject, LABEL_Text, text, End
  236.  
  237. #define Button(text,id)        ButtonObject, GA_Text, text, GA_ID, id, GA_RelVerify, TRUE, End
  238. #define PushButton(text,id)    ButtonObject, GA_Text, text, GA_ID, id, GA_RelVerify, TRUE, BUTTON_PushButton, TRUE, End
  239.  
  240. #define TextLine(text)        ButtonObject, GA_Text, text, GA_ReadOnly, TRUE, End
  241. #define LabelTextLine(text,label)    TextLine(text), Label(label)
  242.  
  243. #define String(text,id,maxchars)    StringObject, STRINGA_TextVal, text, STRINGA_MaxChars, maxchars, GA_ID, id, GA_RelVerify, TRUE, GA_TabCycle, TRUE, End
  244. #define LabelString(text,id,maxchars,label)        String(text,id,maxchars), Label(label)
  245. #define PopString(text,id,maxchars,image)    LAYOUT_AddChild, HLayoutObject, String(text,0,maxchars), ButtonObject, BAG_AutoButton, image, GA_RelVerify, TRUE, GA_ID, id, End, End
  246.  
  247. /****************************************************************************
  248.  * BGUI style Window/Layout Group Macros.
  249.  */
  250. #define StartMember         LAYOUT_AddChild
  251. #define StartImage          LAYOUT_AddImage
  252. #define StartHLayout        LAYOUT_AddChild, HLayoutObject
  253. #define StartVLayout        LAYOUT_AddChild, VLayoutObject
  254. #define StartHGroup         StartHLayout
  255. #define StartVGroup         StartVLayout
  256. #ifndef End
  257. #define End                 TAG_END)
  258. #endif
  259. #define EndWindow           End
  260. #define EndMember           End
  261. #define EndImage            End
  262. #define EndObject           End
  263. #define EndHGroup           End
  264. #define EndVGroup           End
  265. #define EndGroup            End
  266.  
  267. /****************************************************************************
  268.  * Lazy typist BGUI inspired macros (BGUI is Copyright Jan van den Baard.)
  269.  */
  270. #define HAlign(p)           LAYOUT_HorizAlignment, p
  271. #define VAlign(p)           LAYOUT_VertAlignment, p
  272. #define Spacing(p)            LAYOUT_InnerSpacing, p
  273. #define LOffset(p)          LAYOUT_LeftSpacing, p
  274. #define ROffset(p)          LAYOUT_RightSpacing, p
  275. #define TOffset(p)          LAYOUT_TopSpacing, p
  276. #define BOffset(p)          LAYOUT_BottomSpacing, p
  277.  
  278. /****************************************************************************
  279.  * And for even lazier typists....
  280.  */
  281. #define VCentered           LAYOUT_VertAlignment, LALIGN_CENTER
  282. #define TAligned            LAYOUT_VertAlignment, LALIGN_TOP
  283. #define BAligned            LAYOUT_VertAlignment, LALIGN_BOTTOM
  284. #define HCentered           LAYOUT_HorizAlignment, LALIGN_CENTER
  285. #define LAligned            LAYOUT_HorizAlignment, LALIGN_LEFT
  286. #define RAligned            LAYOUT_HorizAlignment, LALIGN_RIGHT
  287. #define Offset(x1,y1,x2,y2) LAYOUT_LeftSpacing, x1, LAYOUT_TopSpacing, y1, LAYOUT_RightSpacing, x2, LAYOUT_BottomSpacing, y2
  288. #define EvenSized            LAYOUT_EvenSize, TRUE
  289. #define MemberLabel(a)        CHILD_Label, LabelObject, LABEL_Text, a, LabelEnd
  290.  
  291. /****************************************************************************
  292.  * Easy Menu Macros.
  293.  */
  294. #define Title(t)\
  295.         { NM_TITLE, t, NULL, 0, 0, NULL }
  296. #define Item(t,s,i)\
  297.         { NM_ITEM, t, s, 0, 0, (APTR)i }
  298. #define ItemBar\
  299.         { NM_ITEM, NM_BARLABEL, NULL, 0, 0, NULL }
  300. #define SubItem(t,s,i)\
  301.         { NM_SUB, t, s, 0, 0, (APTR)i }
  302. #define SubBar\
  303.         { NM_SUB, NM_BARLABEL, NULL, 0, 0, NULL }
  304. #define EndMenu\
  305.         { NM_END, NULL, NULL, 0, 0, NULL }
  306.  
  307. #endif /* REACTION_REACTION_MACROS_H */
  308.